{
"cells": [
{
"cell_type": "markdown",
"id": "c04e3ac9",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# Differential equation resolution\n",
"\n",
"## Introduction\n",
"\n",
"We present here a Perceval implementation of a Quantum Machine Learning algorithm for solving differential equations. Its aims is to approximate the solution to the differential equation considered in \\[1\\]:\n",
"\n",
"$$\n",
"\\frac{d f}{d x}+\\lambda f(x)(\\kappa+\\tan (\\lambda x))=0\n",
"$$\n",
"\n",
"with boundary condition $f(0)=f_{0}$. The analytical solution is $f(x)=f_0\\exp (-\\kappa \\lambda x) \\cos (\\lambda x)$.\n",
"\n",
"### QML Loss Function Definition\n",
"\n",
"In order to use QML to solve this differential equation, we first need to derive from it a loss function whose minimum is associated to its analytical solution.\n",
"\n",
"Let $F\\left[\\left\\{d^{m} f / d x^{m}\\right\\}_{m},f, x\\right]=0$ be a general differential equation verified by $f(x)$, where $F[.]$ is an operator acting on $f(x)$, its derivatives and $x$. For the solving of a differential equation, the loss function described in \\[1\\] consists of two terms\n",
"\n",
"$$\n",
" \\mathcal{L}_{\\boldsymbol{\\theta}}\\left[\\left\\{d^{m} g / d x^{m}\\right\\}_{m},g, x\\right]:=\\mathcal{L}_{\\boldsymbol{\\theta}}^{(\\mathrm{diff})}\\left[\\left\\{d^{m} g / d x^{m}\\right\\}_{m},g, x\\right]+\\mathcal{L}_{\\boldsymbol{\\theta}}^{(\\text {boundary})}[g, x].\n",
"$$\n",
"\n",
"The first term $\\mathcal{L}_{\\boldsymbol{\\theta}}^{(\\mathrm{diff})}$ corresponds to the differential equation which has been discretised over a fixed regular grid of $M$ points noted $x_i$:\n",
"\n",
"$$\n",
" \\mathcal{L}_{\\boldsymbol{\\theta}}^{(\\mathrm{diff})}\\left[\\left\\{d^{m} g / d x^{m}\\right\\}_{m},g, x\\right]:=\\frac{1}{M} \\sum_{i=1}^{M} L\\left(F\\left[d_{x}^m g\\left(x_{i}\\right), g\\left(x_{i}\\right), x_{i}\\right], 0\\right),\n",
"$$\n",
"\n",
"where $L(a,b) := (a - b)^2$ is the squared distance between two arguments. The second term $\\mathcal{L}_{\\boldsymbol{\\theta}}^{(\\text {boundary })}$ is associated to the initial conditions of our desired solution. It is defined as: \n",
"\n",
"$$\n",
" \\mathcal{L}_{\\boldsymbol{\\theta}}^{\\text {(boundary) }}[g, x]:=\\eta L\\left(g(x_0), f_{0}\\right),\n",
"$$\n",
" \n",
"where $\\eta$ is the weight granted to the boundary condition and $f_{0}$ is given by $f(x_0) = f_0$. \n",
"\n",
"Given a function approximator $f^{(n)}(x, \\boldsymbol{\\theta}, \\boldsymbol{\\lambda})$, the loss function above will be minimised using a classical algorithm, updating the parameters $\\boldsymbol{\\theta}$ based on samples obtained using a quantum device.\n",
"\n",
"### Quantum circuit architecture\n",
"\n",
"The feature map used is presented in \\[2,3,4\\]. The quantum circuit architecture from \\[4\\] is expressed as $\\mathcal{U}(x, \\boldsymbol{\\theta}):=\\mathcal{W}^{(2)}\\left(\\boldsymbol{\\theta}_{2}\\right) \\mathcal{S}(x) \\mathcal{W}^{(1)}\\left(\\boldsymbol{\\theta}_{1}\\right).$ The phase-shift operator $\\mathcal{S}(x)$ incorporates the $x$ dependency of the function we wish to approximate. It is sandwiched between two universal interferometers $\\mathcal{W}^{(1)}(\\boldsymbol{\\theta_1})$ and $\\mathcal{W}^{(2)}(\\boldsymbol{\\theta_2})$, where the beam-splitter parameters $\\boldsymbol{\\theta_1}$ and $\\boldsymbol{\\theta_2}$ of this mesh architecture are tunable to enable training of the circuit.\n",
"The output measurement operator, noted $\\mathcal{M}(\\boldsymbol{\\lambda})$, is the projection on the Fock states obtained using photon-number resolving detectors, multiplied by some coefficients $\\boldsymbol{\\lambda}$ which can also be tunable. Formally, we have:\n",
"\n",
"$$ \\mathcal{M}(\\boldsymbol{\\lambda}) = \\sum_{\\mathbf{\\left | n^{(f)}\\right \\rangle}}\\lambda_{\\mathbf{\\left | n^{(f)}\\right \\rangle}}\\mathbf{\\left | n^{(f)}\\right \\rangle}\\mathbf{\\left \\langle n^{(f)}\\right |},\n",
"$$\n",
"\n",
"where the sum is taken over all $\\binom{n+m-1}{n}$ possible Fock states considering $n$ photons in $m$ modes. Let $\\mathbf{\\left | n^{(i)}\\right \\rangle} = \\left |n^{(i)}_1,n^{(i)}_2,\\dots,n^{(i)}_m\\right \\rangle$ be the input state consisting of $n$ photons where $n^{(i)}_j$ is the number of photons in input mode $j$. Given these elements, the circuit's output $f^{(n)}(x, \\boldsymbol{\\theta}, \\boldsymbol{\\lambda})$ is given by the following expectation value:\n",
"\n",
"$$\n",
"f^{(n)}(x, \\boldsymbol{\\theta}, \\boldsymbol{\\lambda})=\\left\\langle\\mathbf{n}^{(i)}\\left|\\mathcal{U}^{\\dagger}(x, \\boldsymbol{\\theta}) \\mathcal{M}(\\boldsymbol{\\lambda}) \\mathcal{U}(x, \\boldsymbol{\\theta})\\right| \\mathbf{n}^{(i)}\\right\\rangle.\n",
"$$\n",
"\n",
"This expression can be rewritten as the following Fourier series \\[4\\]\n",
"\n",
"$$\n",
"f^{(n)}(x, \\boldsymbol{\\theta}, \\boldsymbol{\\lambda})=\\sum_{\\omega \\in \\Omega_{n}} c_{\\omega}(\\boldsymbol{\\theta}, \\boldsymbol{\\lambda}) e^{i \\omega x},\n",
"$$\n",
"\n",
"where $\\Omega_n = \\{-n, -n+1, \\dots, n-1, n \\}$ is the frequency spectrum one can reach with $n$ incoming photons and $\\{c_\\omega(\\boldsymbol{\\theta}, \\boldsymbol{\\lambda})\\}$ are the Fourier coefficients. The $\\boldsymbol{\\lambda}$ parameters are sampled randomly in the interval $[-a;a]$, with $a$ a randomly chosen integer. $f^{(n)}(x, \\boldsymbol{\\theta}, \\boldsymbol{\\lambda})$ will serve as a function approximator for this chosen differential equation. Differentiation in the loss function is discretised as $\\frac{df}{dx} \\simeq \\frac{f(x+\\Delta x) - f(x-\\Delta x)}{2\\Delta x}$.\n",
"\n",
"$n, m,$ and $\\boldsymbol{\\lambda}$ are variable parameters defined below. $\\Delta x$ is the mesh size."
]
},
{
"cell_type": "markdown",
"id": "e9df16c8",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Perceval Simulation\n",
"\n",
"### Initialisation"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7918962c",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"import perceval as pcvl\n",
"import numpy as np\n",
"from math import comb\n",
"from scipy.optimize import minimize\n",
"import time\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib as mpl\n",
"import tqdm as tqdm"
]
},
{
"cell_type": "markdown",
"id": "04323b71",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"We will run this notebook with 4 photons. We could use more photons, but the result with 4 photons is already satisfying."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f59b62f8",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"nphotons = 4"
]
},
{
"cell_type": "markdown",
"id": "bd3c3eaf",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Differential equation parameters\n",
"\n",
"We define here the value of the differential equation parameters and boundary condition $\\lambda, \\kappa, f_0$."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "debd15cc",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# Differential equation parameters\n",
"lambd = 8\n",
"kappa = 0.1\n",
"\n",
"def F(u_prime, u, x): # DE, works with numpy arrays\n",
" return u_prime + lambd * u * (kappa + np.tan(lambd * x))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4c18efbf",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# Boundary condition (f(x_0)=f_0)\n",
"x_0 = 0\n",
"f_0 = 1"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "ac67fd52",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# Modeling parameters\n",
"n_grid = 50 # number of grid points of the discretized differential equation\n",
"range_min = 0 # minimum of the interval on which we wish to approximate our function\n",
"range_max = 1 # maximum of the interval on which we wish to approximate our function\n",
"X = np.linspace(range_min, range_max-range_min, n_grid) # Optimisation grid"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "45a02405",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# Differential equation's exact solution - for comparison\n",
"def u(x):\n",
" return np.exp(- kappa*lambd*x)*np.cos(lambd*x)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "9c8830ee",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"# Parameters of the quantum machine learning procedure\n",
"N = nphotons # Number of photons\n",
"m = nphotons # Number of modes\n",
"eta = 5 # weight granted to the initial condition\n",
"a = 200 # Approximate boundaries of the interval that the image of the trial function can cover\n",
"fock_dim = comb(N + m - 1, N)\n",
"# lambda coefficients for all the possible outputs\n",
"lambda_random = 2 * a * np.random.rand(fock_dim) - a\n",
"# dx serves for the numerical differentiation of f\n",
"dx = (range_max-range_min) / (n_grid - 1)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "355b87c8",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"|1,1,1,1>\n"
]
}
],
"source": [
"# Input state with N photons and m modes\n",
"input_state = pcvl.BasicState([1]*N+[0]*(m-N))\n",
"print(input_state)"
]
},
{
"cell_type": "markdown",
"id": "58385605",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## Definition of the circuit\n",
"\n",
"We will generate a Haar-random initial unitary using QR decomposition built in Perceval `Matrix.random_unitary`, the circuit is defined by the combination of 3 sub-circuits - the intermediate phase is a parameter."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "5dd4d6c3",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
""
],
"text/plain": [
""
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"Haar unitary parameters\"\n",
"# number of parameters used for the two universal interferometers (2*m**2 per interferometer)\n",
"parameters = np.random.normal(size=4*m**2)\n",
"\n",
"px = pcvl.P(\"px\")\n",
"c = pcvl.Unitary(pcvl.Matrix.random_unitary(m, parameters[:2 * m ** 2]), name=\"W1\")\\\n",
" // (0, pcvl.PS(px))\\\n",
" // pcvl.Unitary(pcvl.Matrix.random_unitary(m, parameters[2 * m ** 2:]), name=\"W2\")\n",
"\n",
"simulator_backend = pcvl.BackendFactory().get_backend(\"SLOS\")\n",
"s1 = simulator_backend(pcvl.Matrix.random_unitary(m))\n",
"s1.compile(input_state)\n",
"\n",
"pcvl.pdisplay(c)"
]
},
{
"cell_type": "markdown",
"id": "5d9333b0",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Expectation value and loss function computation\n",
"\n",
"The expectation value of the measurement operator $\\mathcal{M}(\\boldsymbol{\\lambda})$ is obtained directly from Fock state probabilities computed by Perceval. Given this expectation value, the code snippet below computes the loss function defined in the Introduction.\n",
"\n",
"Note the use of the `all_prob` simulator method giving directly access to the probabilities of all possible output states, including null probabilities. This calculation is optimized in SLOS backend."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "597cce98",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"def computation(params):\n",
" global current_loss\n",
" global computation_count\n",
" \"compute the loss function of a given differential equation in order for it to be optimized\"\n",
" computation_count += 1\n",
" f_theta_0 = 0 # boundary condition\n",
" coefs = lambda_random # coefficients of the M observable\n",
" # initial condition with the two universal interferometers and the phase shift in the middle\n",
" U_1 = pcvl.Matrix.random_unitary(m, params[:2 * m ** 2])\n",
" U_2 = pcvl.Matrix.random_unitary(m, params[2 * m ** 2:])\n",
"\n",
" px = pcvl.P(\"x\")\n",
" c = pcvl.Unitary(U_2) // (0, pcvl.PS(px)) // pcvl.Unitary(U_1)\n",
"\n",
" px.set_value(np.pi * x_0)\n",
" U = c.compute_unitary(use_symbolic=False)\n",
" s1.U = U\n",
" f_theta_0 = np.sum(np.multiply(s1.all_prob(input_state), coefs))\n",
"\n",
" # boundary condition given a weight eta\n",
" loss = eta * (f_theta_0 - f_0) ** 2 * len(X)\n",
"\n",
" # Y[0] is before the domain we are interested in (used for differentiation), x_0 is at Y[1]\n",
" Y = np.zeros(n_grid + 2)\n",
"\n",
" # x_0 is at the beginning of the domain, already calculated\n",
" Y[1] = f_theta_0\n",
"\n",
" px.set_value(np.pi * (range_min - dx))\n",
" s1.U = c.compute_unitary(use_symbolic=False)\n",
" Y[0] = np.sum(np.multiply(s1.all_prob(input_state), coefs))\n",
"\n",
"\n",
" for i in range(1, n_grid):\n",
" x = X[i]\n",
" px.set_value(np.pi * x)\n",
" s1.U = c.compute_unitary(use_symbolic=False)\n",
" Y[i + 1] = np.sum(np.multiply(s1.all_prob(input_state), coefs))\n",
"\n",
" px.set_value(np.pi * (range_max + dx))\n",
" s1.U = c.compute_unitary(use_symbolic=False)\n",
" Y[n_grid + 1] = np.sum(np.multiply(s1.all_prob(input_state), coefs))\n",
"\n",
" # Differentiation\n",
" Y_prime = (Y[2:] - Y[:-2])/(2*dx)\n",
"\n",
" loss += np.sum((F(Y_prime, Y[1:-1], X))**2)\n",
"\n",
" current_loss = loss / len(X)\n",
" return current_loss"
]
},
{
"cell_type": "markdown",
"id": "8acf5506",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Classical optimisation\n",
"\n",
"Finally the code below performs the optimisation procedure using the loss function defined in the previous section. To this end, we use a Broyden–Fletcher–Goldfarb–Shanno (BFGS) optimiser \\[5\\] from the SciPy library."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "281dbb29",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"def callbackF(parameters):\n",
" \"\"\"callback function called by scipy.optimize.minimize allowing to monitor progress\"\"\"\n",
" global current_loss\n",
" global computation_count\n",
" global loss_evolution\n",
" global start_time\n",
" now = time.time()\n",
" pbar.set_description(\"M= %d Loss: %0.5f #computations: %d elapsed: %0.5f\" % \n",
" (m, current_loss, computation_count, now-start_time))\n",
" pbar.update(1)\n",
" loss_evolution.append((current_loss, now-start_time))\n",
" computation_count = 0\n",
" start_time = now"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "465db5d2",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"M= 4 Loss: 0.00259 #computations: 195 elapsed: 1.53568: : 117it [01:43, 1.19s/it] "
]
}
],
"source": [
"computation_count = 0\n",
"current_loss = 0\n",
"start_time = time.time()\n",
"loss_evolution = []\n",
"\n",
"pbar = tqdm.tqdm()\n",
"res = minimize(computation, parameters, callback=callbackF, method='BFGS', options={'gtol': 1E-2})"
]
},
{
"cell_type": "markdown",
"id": "1be681a8",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"After the optimisation procedure has been completed, the optimal unitary parameters (in `res.x`) can be used to determine the quantum circuit beam-splitter and phase-shifter angles for an experimental realisation."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "21726b0c",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Unitary parameters [ 0.06288015 -0.46766255 -1.35750088 -0.69245981 1.91915527 -0.3664978\n",
" 2.33459189 -0.81260598 0.00469419 -0.24181104 0.96650738 1.87575626\n",
" -0.42499621 -0.46514721 -0.40457874 -2.42729821 0.1573016 -0.73709542\n",
" 0.61004258 1.84471732 1.73285762 -0.20159712 0.25432091 1.03383559\n",
" -0.30688057 2.90045031 0.27206763 0.82699894 -0.27334301 -1.01200369\n",
" -1.58195825 1.76439029 -2.74254204 0.69107417 1.48317302 -0.43958469\n",
" -0.90807896 1.53240125 0.86739936 0.33513812 -0.82602653 -0.88284405\n",
" 0.44669912 0.37906319 -0.03029149 0.14336839 -0.17139438 -2.05323973\n",
" -0.11085795 -0.09207871 -0.08488444 -0.36721392 -0.66922089 0.35282081\n",
" 0.53744991 -0.13106399 -0.68348908 0.65520211 -1.04250027 1.02240978\n",
" 0.55371764 -0.85351974 -0.10360431 0.64527886]\n"
]
}
],
"source": [
"print(\"Unitary parameters\", res.x)"
]
},
{
"cell_type": "markdown",
"id": "3b6c5da8",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"### Plotting the approximation\n",
"\n",
"We now plot the result of our optimisation in order to compare the QML algorithm's output and the analytical solution."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "6bede765",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"def plot_solution(m, N, X, optim_params, lambda_random):\n",
" Y = []\n",
" U_1 = pcvl.Matrix.random_unitary(m, optim_params[:2 * m ** 2])\n",
" U_2 = pcvl.Matrix.random_unitary(m, optim_params[2 * m ** 2:])\n",
" px = pcvl.P(\"x\")\n",
" c = pcvl.Unitary(U_2) // (0, pcvl.PS(px)) // pcvl.Unitary(U_1)\n",
"\n",
" for x in X:\n",
" px.set_value(np.pi * x)\n",
" U = c.compute_unitary(use_symbolic=False)\n",
" s1.U = U\n",
" f_theta = np.sum(np.multiply(s1.all_prob(input_state), lambda_random))\n",
" Y.append(f_theta)\n",
" exact = u(X)\n",
" plt.plot(X, Y, label=\"Approximation with {} photons\".format(N))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "b997c635",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"image/png": "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okWLy4/ZsGFD+vfvz/Hjx8mePTuff/45999/Py1atGDEiBH8dZXX+cMPP/DNN9/w559/kjZtWk6diqtabdu2pU+fPgC88sorjB8/nscee+yar2fgwIEsWLCAvHnzcubMGQBGjhyJMYYNGzawdetWmjZtyvbt22/qj3DIkCFs3Ljxcua9e/deXne9x/3rr79Yu3YtgYGBlCxZkscee4z8+fNf5Rnk3xJrVp8u1trc1lp/a20+a+14a+3o+NJP/Gw+j1hri1pry1trQ6/Yd4K1tlj8z+eJkSc5Bfj50K9+URa+0JjjvftxZ89P2JSzKDz4YNw3AKdPu44oIiIiDkybNo3OnTsD0Llz538M96levTr58uXDx8eHSpUqXS69S5YsoUaNGpQvX57FixezadOmfzymMYYePXowZcoUzpw5w++//87dd9993Rw///wzvXv3Jm3atABkyZIFgI0bN1KvXj3Kly/P1KlT//Nc/1anTh169erF2LFjiYk/t3H58uV0794dgFKlSlGwYMGbLv7Xc73HbdSoERkzZiQoKIgyZcqwb9++BD9faqEr9yaSHBmCGN6lMt+UzkHXnHnovPJbBiwYh09ICMyZAxUquI4oIiKSOt3gyHxSOHXqFIsXL2bDhg0YY4iJicEYw/vvvw9AYGDg5W19fX2Jjo4mPDyc/v37ExoaSv78+XnjjTcIDw//z2P37t2bFi1aEBQURIcOHfDzu70616tXL+bOnUvFihWZOHEiS5cuve72o0eP5s8//+S7776jatWqrF69+qaex8/Pj9jY2Mv3r/aabsXV/uzk5njNrD7eolWlvHz/ZH3+atWD9p3f5lzYeWytWvDVV66jiYiISDKZNWsWPXr0YN++fezdu5f9+/dTuHBhli1bds19/l+Is2XLxvnz5695omuePHnIkycPgwcPpnfv3peX+/v7ExUV9Z/tmzRpwueff355DP//h/qcO3eO3LlzExUVxdSpU2/4mnbt2kWNGjUYOHAg2bNnZ//+/dSrV+/yvtu3b+fvv/+mZMmS/9ivUKFCrFmzBoA1a9awZ88eANKnT8+5c+eu+lw387hy61T8k0C+zGmZ2qcG5do3487OH7Ajb3Ho3Bnee891NBEREUkG06ZNo02bNv9Y1q5du+vO7pMpUyb69OlDuXLluOuuu6hWrdo1t+3WrRv58+endOnSl5f1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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"X = np.linspace(range_min, range_max, 200)\n",
"\n",
"# Change the plot size\n",
"default_figsize = mpl.rcParamsDefault['figure.figsize']\n",
"mpl.rcParams['figure.figsize'] = [2 * value for value in default_figsize]\n",
"\n",
"plot_solution(m, N, X, res.x, lambda_random)\n",
"\n",
"plt.plot(X, u(X), 'r', label='Analytical solution')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "f819bb4b",
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Loss function value')"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot([v[0] for v in loss_evolution])\n",
"plt.yscale(\"log\")\n",
"plt.xlabel(\"Number of epochs\")\n",
"plt.ylabel(\"Loss function value\")"
]
},
{
"cell_type": "markdown",
"id": "e53fa645",
"metadata": {
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"## References\n",
"\n",
"\\[1\\] : O. Kyriienko, A. E. Paine, and V. E. Elfving, “Solving nonlinear differential equations with differentiable quantum circuits”, *Physical Review A* **103**, 052416 (2021). https://journals.aps.org/pra/abstract/10.1103/PhysRevA.103.052416\n",
"\n",
"\\[2\\] A. Pérez-Salinas, A. Cervera-Lierta, E. Gil-Fuster, and J. I. Latorre, “Data re-uploading for a universal quantum classifier”, *Quantum* **4**, 226 (2020). https://quantum-journal.org/papers/q-2020-02-06-226/\n",
"\n",
"\\[3\\] M. Schuld, R. Sweke, and J. J. Meyer, “Effect of data encoding on the expressive power of variational quantum-machine-learning models”, *Physical Review A* **103**, 032430 (2021). https://journals.aps.org/pra/abstract/10.1103/PhysRevA.103.032430\n",
"\n",
"\\[4\\] B. Y. Gan, D. Leykam, D. G. Angelakis, and D. G. Angelakis, “Fock State-enhanced Expressivity of Quantum Machine Learning Models”, in *Conference on Lasers andElectro-Optics* (2021), paper JW1A.73. Optica Publishing Group, (2021). https://opg.optica.org/abstract.cfm?uri=CLEO_AT-2021-JW1A.73.\n",
"\n",
"\\[5\\] R. Fletcher, Practical methods of optimization. John Wiley & Sons. (2013) https://onlinelibrary.wiley.com/doi/book/10.1002/9781118723203"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}